﻿using System;
using System.ComponentModel.DataAnnotations;

namespace Digitalmes.Model
{


    public enum DataSampleEnum
    {
        [Display(Name = "_Enum._DataSampleEnum._SingleData")]
        SingleData,
        [Display(Name = "_Enum._DataSampleEnum._ImageData")]
        ImageData,
        [Display(Name = "_Enum._DataSampleEnum._CurveData")]
        CurveData,
        [Display(Name = "_Enum._DataSampleEnum._TimeCollection")]
        TimeCollection,
        [Display(Name = "_Enum._DataSampleEnum._DocumentData")]
        DocumentData,
        [Display(Name = "_Enum._DataSampleEnum._VideoData")]
        VideoData
    }
    public enum MaintenanceTypeEnum
    {
        [Display(Name = "_Enum._MaintenanceTypeEnum._Routine")]
        Routine,
        [Display(Name = "_Enum._MaintenanceTypeEnum._Periodic")]
        Periodic,
        [Display(Name = "_Enum._MaintenanceTypeEnum._Repair")]
        Repair
    }
    public enum MaintenanceResultEnum
    {
        [Display(Name = "_Enum._MaintenanceResultEnum._Completed")]
        Completed,
        [Display(Name = "_Enum._MaintenanceResultEnum._Delayed")]
        Delayed,
        [Display(Name = "_Enum._MaintenanceResultEnum._Cancelled")]
        Cancelled
    }

    public enum DataSourceEnum
    {
        [Display(Name = "_Enum._DataSourceEnum._AutoCollect")]
        AutoCollect,
        [Display(Name = "_Enum._DataSourceEnum._ManualInput")]
        ManualInput,
        [Display(Name = "_Enum._DataSourceEnum._Import")]
        Import
    }


    public enum MeterDeviceTypeEnum
    {
        [Display(Name = "_Enum._MeterDeviceType._ElectricMeter")]
        ElectricMeter,
        [Display(Name = "_Enum._MeterDeviceType._PressureMeter")]
        PressureMeter,
        [Display(Name = "_Enum._MeterDeviceType._FlowMeter")]
        FlowMeter,
        [Display(Name = "_Enum._MeterDeviceType._ProtectiveGasMeter")]
        ProtectiveGasMeter,
        [Display(Name = "_Enum._MeterDeviceType._GasMeter")]
        GasMeter,
        [Display(Name = "_Enum._MeterDeviceType._WaterMeter")]
        WaterMeter
    }
    public enum CollectStatusEnum
    {
        [Display(Name = "_Enum._CollectStatusEnum._Success")]
        Success,
        [Display(Name = "_Enum._CollectStatusEnum._Failed")]
        Failed,
        [Display(Name = "_Enum._CollectStatusEnum._Timeout")]
        Timeout
    }
    public enum TaskStatusEnum
    {
        [Display(Name = "_Enum._TaskStatusEnum._Enabled")]
        Enabled,
        [Display(Name = "_Enum._TaskStatusEnum._Paused")]
        Paused,
        [Display(Name = "_Enum._TaskStatusEnum._Completed")]
        Completed
    }
    public enum InOutEnum
    {
        [Display(Name = "_Enum._InOutEnum._Manual")]
        Manual,
        [Display(Name = "_Enum._InOutEnum._Sys")]
        Sys,
        [Display(Name = "_Enum._InOutEnum._Scan")]
        Scan
    }
    public enum FormStatusEnum
    {
        [Display(Name = "_Enum._FormStatus._Audit")]
        Audit,
        [Display(Name = "_Enum._FormStatus._Done")]
        Done,
        [Display(Name = "_Enum._FormStatus._Cancel")]
        Cancel,
        [Display(Name = "_Enum._FormStatus._WaitAudit")]
        WaitAudit,
        [Display(Name = "_Enum._FormStatus._Deny")]
        Deny
    }

    public enum MessageType
    {
        Text,
        Image,
        File,
        System
    }

    public enum GroupRole
    {
        Member,
        Admin,
        Owner
    }
    public enum TagDefineEnum
    {
        [Display(Name = "_Enum._TagDefine._Alarm")]
        Alarm,
        [Display(Name = "_Enum._TagDefine._Equipment_State")]
        Equipment_State,
        [Display(Name = "_Enum._TagDefine._Equipment_Mode")]
        Equipment_Mode,
        [Display(Name = "_Enum._TagDefine._Entry_Sign")]
        Entry_Sign,
        [Display(Name = "_Enum._TagDefine._Entry_SN")]
        Entry_SN,
        [Display(Name = "_Enum._TagDefine._Entry_Formual")]
        Entry_Formual,
        [Display(Name = "_Enum._TagDefine._Entry_Rfid")]
        Entry_Rfid,
        [Display(Name = "_Enum._TagDefine._Archive_Sign")]
        Archive_Sign,
        [Display(Name = "_Enum._TagDefine._Archive_SN")]
        Archive_SN,
        [Display(Name = "_Enum._TagDefine._Archive_Status")]
        Archive_Status,
        [Display(Name = "_Enum._TagDefine._Archive_Formual")]
        Archive_Formual,
        [Display(Name = "_Enum._TagDefine._Archive_Operator")]
        Archive_Operator,
        [Display(Name = "_Enum._TagDefine._Archive_Shift")]
        Archive_Shift,
        [Display(Name = "_Enum._TagDefine._Archive_Rfid")]
        Archive_Rfid,
        [Display(Name = "_Enum._TagDefine._Archive_CycleTime")]
        Archive_CycleTime,
        [Display(Name = "_Enum._TagDefine._Scan_Sign")]
        Scan_Sign,
        [Display(Name = "_Enum._TagDefine._Scan_Barcode")]
        Scan_Barcode,
        [Display(Name = "_Enum._TagDefine._Scan_Step")]
        Scan_Step,
        [Display(Name = "_Enum._TagDefine._ScanBatch_Sign")]
        ScanBatch_Sign,
        [Display(Name = "_Enum._TagDefine._ScanBatch_Formual")]
        ScanBatch_Formual,
        [Display(Name = "_Enum._TagDefine._ScanBatch_01_Sign")]
        ScanBatch_01_Sign,
        [Display(Name = "_Enum._TagDefine._ScanBatch_02_Sign")]
        ScanBatch_02_Sign,
        [Display(Name = "_Enum._TagDefine._ScanBatch_Barcode")]
        ScanBatch_Barcode,
        [Display(Name = "_Enum._TagDefine._TakePartIn_Sign")]
        TakePartIn_Sign,
        [Display(Name = "_Enum._TagDefine._TakePartIn_SN")]
        TakePartIn_SN,
        [Display(Name = "_Enum._TagDefine._SpotCheck_Sign")]
        SpotCheck_Sign,
        [Display(Name = "_Enum._TagDefine._SpotCheck_01_Sign")]
        SpotCheck_01_Sign,
        [Display(Name = "_Enum._TagDefine._SpotCheck_02_Sign")]
        SpotCheck_02_Sign,
        [Display(Name = "_Enum._TagDefine._SpotCheck_Barcode")]
        SpotCheck_Barcode,
        [Display(Name = "_Enum._TagDefine._PLC_Heartbeat")]
        PLC_Heartbeat,
        [Display(Name = "_Enum._TagDefine._Parameter")]
        Parameter,
        [Display(Name = "_Enum._TagDefine._Result")]
        Result,
        [Display(Name = "_Enum._TagDefine._RealTimeData")]
        RealTimeData
    }
    public enum TagDataTypeEnum
    {
        [Display(Name = "_Enum._TagDataType._Sys_Bit")]
        Sys_Bit,
        [Display(Name = "_Enum._TagDataType._Sys_Byte")]
        Sys_Byte,
        [Display(Name = "_Enum._TagDataType._Sys_Word")]
        Sys_Word,
        [Display(Name = "_Enum._TagDataType._Sys_DWord")]
        Sys_DWord,
        [Display(Name = "_Enum._TagDataType._Sys_Int")]
        Sys_Int,
        [Display(Name = "_Enum._TagDataType._Sys_DInt")]
        Sys_DInt,
        [Display(Name = "_Enum._TagDataType._Sys_Real")]
        Sys_Real,
        [Display(Name = "_Enum._TagDataType._Sys_LReal")]
        Sys_LReal,
        [Display(Name = "_Enum._TagDataType._Sys_String")]
        Sys_String
    }
    public enum TagFlagEnum
    {
        [Display(Name = "_Enum._TagFlag._Normal")]
        Normal,
        [Display(Name = "_Enum._TagFlag._Heartbeat")]
        Heartbeat,
        [Display(Name = "_Enum._TagFlag._Trigger_Signle")]
        Trigger_Signle,
        [Display(Name = "_Enum._TagFlag._Parameter")]
        Parameter,
        [Display(Name = "_Enum._TagFlag._Result")]
        Result
    }
    public enum TagAccessModeEnum
    {
        [Display(Name = "_Enum._TagAccessMode._Read")]
        Read,
        [Display(Name = "_Enum._TagAccessMode._Write")]
        Write,
        [Display(Name = "_Enum._TagAccessMode._ReadWrite")]
        ReadWrite,
        MonitorRead,
        MonitorWrite,
        Monitor
    }
    public enum TagGroupEnum
    {
        [Display(Name = "_Enum._TagGroup._Entry")]
        Entry,
        [Display(Name = "_Enum._TagGroup._Archive")]
        Archive,
        [Display(Name = "_Enum._TagGroup._Rewrok")]
        Rewrok,
        [Display(Name = "_Enum._TagGroup._NG")]
        NG,
        [Display(Name = "_Enum._TagGroup._ScanBatch")]
        ScanBatch,
        [Display(Name = "_Enum._TagGroup._ScanKey")]
        ScanKey,
       [Display(Name = "_Enum._TagGroup._None")]
        None,
    }
    public enum OpAttrEnum
    {
        [Display(Name = "_Enum._OpAttrEnum._Auto")]
        Auto,
        [Display(Name = "_Enum._OpAttrEnum._Manaul")]
        Manaul
    }
    public enum OpModeEnum
    {
        [Display(Name = "_Enum._OpModeEnum._Inline")]
        Inline,
        [Display(Name = "_Enum._OpModeEnum._Outside")]
        Outside
    }
    public enum OpTypeEnum
    {
        [Display(Name = "_Enum._OpTypeEnum._Assembling")]
        Assembling,
        [Display(Name = "_Enum._OpTypeEnum._Detection")]
        Detection,
        [Display(Name = "_Enum._OpTypeEnum._Rework")]
        Rework,
        [Display(Name = "_Enum._OpTypeEnum._TakePartInOrOut")]
        TakePartInOrOut,
        [Display(Name = "_Enum._OpTypeEnum._Weild")]
        Weild,
        [Display(Name = "_Enum._OpTypeEnum._PrintMark")]
        PrintMark,
        [Display(Name = "_Enum._OpTypeEnum._Fds")]
        Fds
    }
    public enum PolicyCheckPrevProcEnum
    {
        [Display(Name = "_Enum._PolicyCheckPrevProcEnum._None")]
        None,
        [Display(Name = "_Enum._PolicyCheckPrevProcEnum._Worked")]
        Worked,
        [Display(Name = "_Enum._PolicyCheckPrevProcEnum._WorkedAndOK")]
        WorkedAndOK
    }
    public enum PolicyCheckProcBomEnum
    {
        [Display(Name = "_Enum._PolicyCheckProcBomEnum._None")]
        None,
        [Display(Name = "_Enum._PolicyCheckProcBomEnum._Over")]
        Over
    }
    public enum PolicyCheckProcessEnum
    {
        [Display(Name = "_Enum._PolicyCheckProcBomEnum._None")]
        None,
        [Display(Name = "_Enum._PolicyCheckProcessEnum._AllowedEntryRepeat")]
        AllowedEntryRepeat,
        [Display(Name = "_Enum._PolicyCheckProcessEnum._CheckBOMSource")]
        CheckBOMSource
    }
    public enum ProcCtlAttrEnum
    {
        [Display(Name = "_Enum._ProcCtlAttrEnum._Must")]
        Must,
        [Display(Name = "_Enum._ProcCtlAttrEnum._Optional")]
        Optional
    }
    public enum SnStageEnum
    {
        [Display(Name = "_Enum._SnStageEnum._Inbound")]
        Inbound,
        [Display(Name = "_Enum._SnStageEnum._Outbound")]
        Outbound
    }
    public enum SnStatusEnum
    {
        [Display(Name = "_Enum._SnStatusEnum._OK")]
        OK,
        [Display(Name = "_Enum._SnStatusEnum._NG")]
        NG,
        [Display(Name = "_Enum._SnStatusEnum._MandatoryOK")]
        MandatoryOK,
        [Display(Name = "_Enum._SnStatusEnum._MandatoryNG")]
        MandatoryNG,
        [Display(Name = "_Enum._SnStatusEnum._Scrap")]
        Scrap
    }
    public enum ReworkFlagEnum
    {
        [Display(Name = "_Enum._ReworkFlagEnum._None")]
        None,
        [Display(Name = "_Enum._ReworkFlagEnum._Wait")]
        Wait,
        [Display(Name = "_Enum._ReworkFlagEnum._Working")]
        Working,
        [Display(Name = "_Enum._ReworkFlagEnum._Done")]
        Done,
        [Display(Name = "_Enum._ReworkFlagEnum._DoneAndWaitToRelaunch")]
        DoneAndWaitToRelaunch
    }
    public enum DriverTypeEnum
    {
        [Display(Name = "_Enum._DriverTypeEnum._OpcUa")]
        OpcUa,
        S7_300,
        S7_1200,
        S7_1500,
        SiemensS7,
        MitsubishiMC,
        OmronFins,
        ModbusTcp,      
        Simulator,
        [Display(Name = "_Enum._DriverTypeEnum._None")]
        None
    }
    public enum EquipTypeEnum
    {
        [Display(Name = "_Enum._EquipTypeEnum._Equipment")]
        Equipment,
        [Display(Name = "_Enum._EquipTypeEnum._Tooling")]
        Tooling,
        [Display(Name = "_Enum._EquipTypeEnum._Mould")]
        Mould
    }
    public enum EquipSpotCheckEnum
    {
        [Display(Name = "_Enum._EquipSpotCheckEnum._Barcode")]
        Barcode,
        [Display(Name = "_Enum._EquipSpotCheckEnum._Itemized")]
        Itemized,
        [Display(Name = "_Enum._EquipSpotCheckEnum._None")]
        None
    }
    public enum AlarmLevelEnum
    {
        [Display(Name = "_Enum._AlarmLevelEnum._L1")]
        L1,
        [Display(Name = "_Enum._AlarmLevelEnum._L2")]
        L2,
        [Display(Name = "_Enum._AlarmLevelEnum._L3")]
        L3,
        [Display(Name = "_Enum._AlarmLevelEnum._L4")]
        L4,
        [Display(Name = "_Enum._AlarmLevelEnum._L5")]
        L5
    }
    public enum AlarmTypeEnum
    {
        [Display(Name = "_Enum._AlarmTypeEnum._Robot")]
        Robot,
        [Display(Name = "_Enum._AlarmTypeEnum._EStop")]
        EStop,
        [Display(Name = "_Enum._AlarmTypeEnum._SensorOver")]
        SensorOver,
        [Display(Name = "_Enum._AlarmTypeEnum._Cylinder")]
        Cylinder,
        [Display(Name = "_Enum._AlarmTypeEnum._Raster")]
        Raster,
        [Display(Name = "_Enum._AlarmTypeEnum._Welder")]
        Welder,
        [Display(Name = "_Enum._AlarmTypeEnum._Servo")]
        Servo,
        [Display(Name = "_Enum._AlarmTypeEnum._Welding")]
        Welding,
        [Display(Name = "_Enum._AlarmTypeEnum._Vision")]
        Vision,
        [Display(Name = "_Enum._AlarmTypeEnum._Airtight")]
        Airtight,
        [Display(Name = "_Enum._AlarmTypeEnum._General")]
        General
    }
    public enum AlarmStatusEnum
    {
        [Display(Name = "_Enum._AlarmStatusEnum._Doing")]
        Doing,
        [Display(Name = "_Enum._AlarmStatusEnum._Close")]
        Close,
        [Display(Name = "_Enum._AlarmStatusEnum._None")]
        None
    }
    public enum SpotTypeEnum
    {
        [Display(Name = "_Enum._SpotTypeEnum._Appearance")]
        Appearance,
        [Display(Name = "_Enum._SpotTypeEnum._SafetyDevice")]
        SafetyDevice,
        [Display(Name = "_Enum._SpotTypeEnum._DetectionInstrument")]
        DetectionInstrument,
        [Display(Name = "_Enum._SpotTypeEnum._NgMaster")]
        NgMaster,
        [Display(Name = "_Enum._SpotTypeEnum._OkMaster")]
        OkMaster,
        [Display(Name = "_Enum._SpotTypeEnum._ControlSystem")]
        ControlSystem,
        [Display(Name = "_Enum._SpotTypeEnum._CoolSystem")]
        CoolSystem,
        [Display(Name = "_Enum._SpotTypeEnum._MaintenanceStatus")]
        MaintenanceStatus,
        [Display(Name = "_Enum._SpotTypeEnum._MaintenanceRecords")]
        MaintenanceRecords,
        [Display(Name = "_Enum._SpotTypeEnum._LeakageProtection")]
        LeakageProtection
    }
    public enum SpotStatusEnum
    {
        [Display(Name = "_Enum._SpotStatuEnum._Done")]
        Done,
        [Display(Name = "_Enum._SpotStatuEnum._Ok")]
        Ok,
        [Display(Name = "_Enum._SpotStatuEnum._Ng")]
        Ng,
        [Display(Name = "_Enum._SpotStatuEnum._WaitMaintenance")]
        WaitMaintenance,
        [Display(Name = "_Enum._SpotStatuEnum._WaitRepair")]
        WaitRepair
    }
    public enum EquipStatusEnum
    {
        [Display(Name = "_Enum._EquipStatusEnum._Running")]
        Running,
        [Display(Name = "_Enum._EquipStatusEnum._Warning")]
        Warning,
        [Display(Name = "_Enum._EquipStatusEnum._EStop")]
        EStop,
        [Display(Name = "_Enum._EquipStatusEnum._Offline")]
        Offline,
        [Display(Name = "_Enum._EquipStatusEnum._Maintenance")]
        Maintenance,
        [Display(Name = "_Enum._EquipStatusEnum._Repair")]
        Repair,
        [Display(Name = "_Enum._EquipStatusEnum._Manual")]
        Manual
    }
    public enum MaterialPropertyEnum
    {
        [Display(Name = "_Enum._MaterialPropertyEnum._Master")]
        Master,
        [Display(Name = "_Enum._MaterialPropertyEnum._Batch")]
        Batch,
        [Display(Name = "_Enum._MaterialPropertyEnum._None")]
        None
    }
    public enum MaterialClassifyEnum
    {
        [Display(Name = "_Enum._MaterialClassifyEnum._FERT")]
        FERT,
        [Display(Name = "_Enum._MaterialClassifyEnum._HALB")]
        HALB,
        [Display(Name = "_Enum._MaterialClassifyEnum._ROH")]
        ROH
    }
    public enum WoStatusEnum
    {
        [Display(Name = "_Enum._WoStatusEnum._Created")]
        Created,
        [Display(Name = "_Enum._WoStatusEnum._Scheduled")]
        Scheduled,
        [Display(Name = "_Enum._WoStatusEnum._Issued")]
        Issued,
        [Display(Name = "_Enum._WoStatusEnum._Executing")]
        Executing,
        [Display(Name = "_Enum._WoStatusEnum._Completed")]
        Completed,
        [Display(Name = "_Enum._WoStatusEnum._Paused")]
        Paused,
        [Display(Name = "_Enum._WoStatusEnum._Freezed")]
        Freezed,
        [Display(Name = "_Enum._WoStatusEnum._Canceled")]
        Canceled
    }
    public enum WoSourceEnum
    {
        [Display(Name = "_Enum._WoSourceEnum._Local")]
        Local,
        [Display(Name = "_Enum._WoSourceEnum._Erp")]
        Erp,
        [Display(Name = "_Enum._WoSourceEnum._MOM")]
        MOM
    }
    public enum QcModeEnum
    {
        [Display(Name = "_Enum._QcModeEnum._IQC")]
        IQC,
        [Display(Name = "_Enum._QcModeEnum._IPQC")]
        IPQC,
        [Display(Name = "_Enum._QcModeEnum._FQC")]
        FQC,
        [Display(Name = "_Enum._QcModeEnum._OQC")]
        OQC
    }
    public enum QcCotrolTypeEnum
    {
        [Display(Name = "_Enum._QcCotrolType._Appearance")]
        Appearance,
        [Display(Name = "_Enum._QcCotrolType._Size")]
        Size,
        [Display(Name = "_Enum._QcCotrolType._Performance")]
        Performance,
        [Display(Name = "_Enum._QcCotrolType._OverallFit")]
        OverallFit,
        [Display(Name = "_Enum._QcCotrolType._Other")]
        Other
    }
    public enum QcStatusEnum
    {
        [Display(Name = "_Enum._QcStatusEnum._Ok")]
        Ok,
        [Display(Name = "_Enum._QcStatusEnum._NG")]
        NG,
        [Display(Name = "_Enum._QcStatusEnum._Doing")]
        Doing
    }
    public enum SpcChartTypeEnum
    {
        [Display(Name = "_Enum._SpcChartTypeEnum._Xbar_R")]
        Xbar_R,
        [Display(Name = "_Enum._SpcChartTypeEnum._Xbar_S")]
        Xbar_S,
        [Display(Name = "_Enum._SpcChartTypeEnum._I_MR")]
        I_MR,
        [Display(Name = "_Enum._SpcChartTypeEnum._P")]
        P,
        [Display(Name = "_Enum._SpcChartTypeEnum._NP")]
        NP,
        [Display(Name = "_Enum._SpcChartTypeEnum._U")]
        U,
        [Display(Name = "_Enum._SpcChartTypeEnum._C")]
        C,
        [Display(Name = "_Enum._SpcChartTypeEnum._Xbar_R_Xbar_S")]
        Xbar_R_Xbar_S,
        [Display(Name = "_Enum._SpcChartTypeEnum._NP_P")]
        NP_P,
        [Display(Name = "_Enum._SpcChartTypeEnum._C_U")]
        C_U
    }
    public enum ValueTypeEnum
    {
        [Display(Name = "_Enum._ValueTypeEnum._Custom")]
        Custom,
        [Display(Name = "_Enum._ValueTypeEnum._SerialNumber")]
        SerialNumber,
        [Display(Name = "_Enum._ValueTypeEnum._Parameter")]
        Parameter,
        [Display(Name = "_Enum._ValueTypeEnum._FixedValue")]
        FixedValue
    }
    public enum OpStationStatusEnum
    {
        [Display(Name = "_Enum._OpStationStatus._Normal")]
        Normal,
        [Display(Name = "_Enum._OpStationStatus._Alert")]
        Alert,
        [Display(Name = "_Enum._OpStationStatus._Handling")]
        Handling,
        [Display(Name = "_Enum._OpStationStatus._Resolved")]
        Resolved
    }
    public enum IssueTypeEnum
    {
        [Display(Name = "_Enum._IssueTypeEnum._EquipmentFailure")]
        EquipmentFailure,
        [Display(Name = "_Enum._IssueTypeEnum._MaterialShortage")]
        MaterialShortage,
        [Display(Name = "_Enum._IssueTypeEnum._QualityIssue")]
        QualityIssue,
        [Display(Name = "_Enum._IssueTypeEnum._Other")]
        Other,
        [Display(Name = "_Enum._IssueTypeEnum._Call")]
        Call
    }
    public enum IssueStatusEnum
    {
        [Display(Name = "_Enum._IssueStatusEnum._Pending")]
        Pending,
        [Display(Name = "_Enum._IssueStatusEnum._Handling")]
        Handling,
        [Display(Name = "_Enum._IssueStatusEnum._Resolved")]
        Resolved
    }


    public enum RemoteSyncStatusEnum
    {
        [Display(Name = "_Enum._RemoteSyncStatusEnum._Ready")]
        Ready,
        [Display(Name = "_Enum._RemoteSyncStatusEnum._Completed")]
        Completed,
        [Display(Name = "_Enum._RemoteSyncStatusEnum._Failure")]
        Failure
    }


    public class RefDicNameAttribute : Attribute
    {
        public string Name { get; set; }
    }
}